package ProductOwner;

import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import BdScrum.Proyecto;

public class Requerimiento {
	private int autoproyectorequerimiento;
	private int codigorequerimiento;
	private int codigoproyecto;
	private String titulorequerimiento;
	private String descripcionrequerimiento;
	private String solicitanterequerimiento;
	private Date fechasolicitud;
	private String estadorequerimiento;
	private Date fechacreacion;
	private String usuario;
	private Proyecto proyecto;
	
	public int getAutoproyectorequerimiento() {
		return autoproyectorequerimiento;
	}
	public void setAutoproyectorequerimiento(int autoproyectorequerimiento) {
		this.autoproyectorequerimiento = autoproyectorequerimiento;
	}
	public int getCodigorequerimiento() {
		return codigorequerimiento;
	}
	public void setCodigorequerimiento(int codigorequerimiento) {
		this.codigorequerimiento = codigorequerimiento;
	}
	public int getCodigoproyecto() {
		return codigoproyecto;
	}
	public void setCodigoproyecto(int codigoproyecto) {
		this.codigoproyecto = codigoproyecto;
	}
	public String getTitulorequerimiento() {
		return titulorequerimiento;
	}
	public void setTitulorequerimiento(String titulorequerimiento) {
		this.titulorequerimiento = titulorequerimiento;
	}
	public String getDescripcionrequerimiento() {
		return descripcionrequerimiento;
	}
	public void setDescripcionrequerimiento(String descripcionrequerimiento) {
		this.descripcionrequerimiento = descripcionrequerimiento;
	}
	public String getSolicitanterequerimiento() {
		return solicitanterequerimiento;
	}
	public void setSolicitanterequerimiento(String solicitanterequerimiento) {
		this.solicitanterequerimiento = solicitanterequerimiento;
	}
	public Date getFechasolicitud() {
		return fechasolicitud;
	}
	public void setFechasolicitud(Date fechasolicitud) {
		this.fechasolicitud = fechasolicitud;
	}
	public String getEstadorequerimiento() {
		return estadorequerimiento;
	}
	public void setEstadorequerimiento(String estadorequerimiento) {
		this.estadorequerimiento = estadorequerimiento;
	}
	public Date getFechacreacion() {
		return fechacreacion;
	}
	public void setFechacreacion(Date fechacreacion) {
		this.fechacreacion = fechacreacion;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public Proyecto getProyecto() {
		return proyecto;
	}
	public void setProyecto(Proyecto proyecto) {
		this.proyecto = proyecto;
	}
	public Requerimiento(int autoproyectorequerimiento, int codigorequerimiento, int codigoproyecto,
			String titulorequerimiento, String descripcionrequerimiento,
			String solicitanterequerimiento, Date fechasolicitud,
			String estadorequerimiento, Date fechacreacion, String usuario, Proyecto proyecto) {
		super();
		this.autoproyectorequerimiento = autoproyectorequerimiento;
		this.codigorequerimiento = codigorequerimiento;
		this.codigoproyecto = codigoproyecto;
		this.titulorequerimiento = titulorequerimiento;
		this.descripcionrequerimiento = descripcionrequerimiento;
		this.solicitanterequerimiento = solicitanterequerimiento;
		this.fechasolicitud = fechasolicitud;
		this.estadorequerimiento = estadorequerimiento;
		this.fechacreacion = fechacreacion;
		this.usuario = usuario;
		this.proyecto = proyecto;
	}
	public Requerimiento() {
		
	}
	@Override
	public String toString() {
		return "Requerimiento [autoproyectorequerimiento="
				+ autoproyectorequerimiento + ", codigorequerimiento="
				+ codigorequerimiento + ", codigoproyecto=" + codigoproyecto
				+ ", titulorequerimiento=" + titulorequerimiento
				+ ", descripcionrequerimiento=" + descripcionrequerimiento
				+ ", solicitanterequerimiento=" + solicitanterequerimiento
				+ ", fechasolicitud=" + fechasolicitud
				+ ", estadorequerimiento=" + estadorequerimiento
				+ ", fechacreacion=" + fechacreacion + ", usuario=" + usuario
				+ ", proyecto=" + proyecto
				+ "]";
	}
	public String EliminarRequerimiento(int AutoProyReq, HashMap<Integer, Requerimiento> oListaRequerimiento, HashMap<Integer, HistoriadeUsuario> oListaHistoriadeUsuario) {
		if (AutoProyReq != 0){
			HistoriadeUsuario oHistoria = new HistoriadeUsuario();
			String ResultadoBusqueda="";
			Iterator it = oListaHistoriadeUsuario.entrySet().iterator();
			while (it.hasNext()) {
				Map.Entry e = (Map.Entry)it.next();
				oHistoria = (HistoriadeUsuario) e.getValue();
				if (oHistoria.getCodigorequerimiento() == AutoProyReq){
					ResultadoBusqueda = "Requerimiento asignado a una historia";
				}
			}
			if (ResultadoBusqueda != ""){
				return ResultadoBusqueda;
			}else{
				
				Requerimiento oRequerimiento =new Requerimiento ();
				oRequerimiento =oListaRequerimiento.get(AutoProyReq);
				if(oRequerimiento.getEstadorequerimiento() == "Aprobado" ){
					return "Este Requerimiento se encuentra Aprobado No se Puede Eliminar";
				}		
			oListaRequerimiento.remove(AutoProyReq);
			return "Requerimiento Eliminado Satisfactoriamente";
		}
		  }else{
			return "No se encontro al requerimiento";
		}
	}

	public String ModificarRequerimiento(int AutoProyReq, HashMap<Integer, Requerimiento> oListaRequerimiento,
			Requerimiento oRequerimiento) {
		if (AutoProyReq != 0){
			oListaRequerimiento.put(AutoProyReq, oRequerimiento );
			return "Requerimiento Modificado Satisfactoriamente";	
		}else{
			return "No se encontro al requerimiento";
		}
	}
	public String BuscarRequerimiento(int AutoProyReq, HashMap<Integer, Requerimiento> oListaRequerimiento) {
		if (AutoProyReq != 0){
			oListaRequerimiento.get(AutoProyReq);
			return "Requerimiento Encontrado Satisfactoriamente";	
		}else{
			return "No se encontro al requerimiento";
		}
	}
	public Object BuscarRequerimiento(int AutoProyReq, HashMap<Integer, Requerimiento> oListaRequerimiento,
			String mensaje) {
		if (AutoProyReq != 0){
			return oListaRequerimiento.get(AutoProyReq);
		}else{
			return null;
		}
	}
	public String InsertarRequerimiento(int AutoProyReq, HashMap<Integer, Requerimiento> oListaRequerimiento,
			Requerimiento oRequerimiento) {
		if (AutoProyReq != 0){
			oListaRequerimiento.put(AutoProyReq, oRequerimiento);
			return "Requerimiento Registrado Satisfactoriamente";	
		}else{
			return "No se registro al requerimiento";
		}
	}
}
